package morefun;


import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;


object helloSpark {

  def main(args: Array[String]): Unit = {
    //设置本机Spark配置
//    val conf = new SparkConf().setAppName("wordCount") //.setMaster("local") // 集群
    val conf = new SparkConf().setAppName("wordCount").setMaster("local") // 本地测试
    //创建Spark上下
    val sc = new SparkContext(conf)


    //从文件中获取数据
//    val lines = sc.textFile("hdfs://spark1:9000/spark.txt") // 集群
        val lines = sc.textFile("file:/Users/wdy/Downloads/daily.log") // 本地测试，fasterxml 版本不对，可能会导致这里出错
//    val input = sc.textFile("file:/Users/wdy/dev/src/gitoschina/DanDanTV-Server/doc/配置文件/v1.0/data_config_domy.json")


    val errors = lines.filter(_.contains("ERROR")) // errors is a org.apache.spark.rdd.FilteredRDD
    var cache = errors.cache() // persist 到内存中,它的作用是在RDD的计算完成后，将结果cache起来，以供以后的计算使用，这样的话可以加快以后运算的速度
    var count = errors.count() // 触发action，计算errors有多少个，即ERROR的多少行；hadoop 版本不对，可能会导致这里出错

    println(" count = " + count);

    var string = lines.toString;
    //分析并排序输出统计结果
    lines.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((x, y) => x + y).sortBy(_._2,false).foreach(println _)
  }
}
